package feizhou.untils.tools;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

/**
 * 
 * @ClassName : RandomUtil.java
 * @Description: 随机数Util
 * @Modification history Sep 16, 2014 1:38:13 PM
 * @Autor : driver.deng driver_deng@163.com
 * @Date : Sep 16, 2014 1:38:13 PM
 * @version :
 * 
 */
public class RandomUtil {

	private static Random random = new Random();

	/**
	 * 
	 * 根据字符串型的id数值，随机得到其中的一个Id
	 * 
	 * @param idsStr
	 * @return
	 */
	public static Long getId(String idsStr) {
		Long id = null;
		Long[] ids = getIdArrByIdsStr(idsStr);
		if (ids != null && ids.length > 0) {
			id = getRandomIdByIds(ids);
		}
		return id;
	}

	/**
	 * 
	 * 根据id字符串串,转换获取id 的数组
	 * 
	 * @param idsStr
	 * @return
	 */
	public static Long[] getIdArrByIdsStr(String idsStr) {
		if (idsStr == null)
			return null;
		String[] idStrArr = idsStr.split(",");
		Long[] ids = null;
		if (idStrArr != null && idStrArr.length > 0) {
			ids = new Long[idStrArr.length];
			for (int i = 0; i < idStrArr.length; i++) {
				ids[i] = Long.parseLong(idStrArr[i]);
			}
		}
		return ids;
	}

	/**
	 * 
	 * 根据id数据，随机获取ID
	 * 
	 * @param ids
	 * @return
	 */
	public static Long getRandomIdByIds(Long[] ids) {
		Long id = null;
		int index1 = (int) (random.nextInt(100) % ids.length);
		id = ids[index1];
		return id;
	}

	/**
	 * 获取指定个数的不重复的随机数
	 * @Autor : xiongjinpeng  jpx_011@163.com
	 * @Date  : 2017年5月22日 下午1:48:16 
	 * @param sz
	 * @param max
	 * @return
	 */
	public static int[] getRandomList(int sz,int max) {
		Random random = new Random();
		int a[] = new int[sz];
		Set<Integer> has=new HashSet<Integer>();
		for (int i = 0; i < a.length; i++) {
			a[i] = random.nextInt(max);
			while(has.contains(a[i])){
				a[i] = random.nextInt(max);
			}
			has.add(a[i]);
		}
		return a;
	}
	public static void main(String[] args) {
		String idsStr = "1,2,3,4,5,6,7,8";
		Long[] idArr = getIdArrByIdsStr(idsStr);
		for (int i = 0; i < 100; i++) {
			System.out.println(getId(idsStr));
			System.out.println(getRandomIdByIds(idArr));
		}
	}
}
